↳ Prolog
↳ PrologToPiTRSProof
lessleaves_in_gg(nil, cons(W, Z)) → lessleaves_out_gg(nil, cons(W, Z))
lessleaves_in_gg(cons(U, V), cons(W, Z)) → U2_gg(U, V, W, Z, append_in_gga(U, V, U1))
append_in_gga(nil, Y, Y) → append_out_gga(nil, Y, Y)
append_in_gga(cons(U, V), Y, cons(U, Z)) → U1_gga(U, V, Y, Z, append_in_gga(V, Y, Z))
U1_gga(U, V, Y, Z, append_out_gga(V, Y, Z)) → append_out_gga(cons(U, V), Y, cons(U, Z))
U2_gg(U, V, W, Z, append_out_gga(U, V, U1)) → U3_gg(U, V, W, Z, U1, append_in_gga(W, Z, W1))
U3_gg(U, V, W, Z, U1, append_out_gga(W, Z, W1)) → U4_gg(U, V, W, Z, lessleaves_in_gg(U1, W1))
U4_gg(U, V, W, Z, lessleaves_out_gg(U1, W1)) → lessleaves_out_gg(cons(U, V), cons(W, Z))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
lessleaves_in_gg(nil, cons(W, Z)) → lessleaves_out_gg(nil, cons(W, Z))
lessleaves_in_gg(cons(U, V), cons(W, Z)) → U2_gg(U, V, W, Z, append_in_gga(U, V, U1))
append_in_gga(nil, Y, Y) → append_out_gga(nil, Y, Y)
append_in_gga(cons(U, V), Y, cons(U, Z)) → U1_gga(U, V, Y, Z, append_in_gga(V, Y, Z))
U1_gga(U, V, Y, Z, append_out_gga(V, Y, Z)) → append_out_gga(cons(U, V), Y, cons(U, Z))
U2_gg(U, V, W, Z, append_out_gga(U, V, U1)) → U3_gg(U, V, W, Z, U1, append_in_gga(W, Z, W1))
U3_gg(U, V, W, Z, U1, append_out_gga(W, Z, W1)) → U4_gg(U, V, W, Z, lessleaves_in_gg(U1, W1))
U4_gg(U, V, W, Z, lessleaves_out_gg(U1, W1)) → lessleaves_out_gg(cons(U, V), cons(W, Z))
LESSLEAVES_IN_GG(cons(U, V), cons(W, Z)) → U2_GG(U, V, W, Z, append_in_gga(U, V, U1))
LESSLEAVES_IN_GG(cons(U, V), cons(W, Z)) → APPEND_IN_GGA(U, V, U1)
APPEND_IN_GGA(cons(U, V), Y, cons(U, Z)) → U1_GGA(U, V, Y, Z, append_in_gga(V, Y, Z))
APPEND_IN_GGA(cons(U, V), Y, cons(U, Z)) → APPEND_IN_GGA(V, Y, Z)
U2_GG(U, V, W, Z, append_out_gga(U, V, U1)) → U3_GG(U, V, W, Z, U1, append_in_gga(W, Z, W1))
U2_GG(U, V, W, Z, append_out_gga(U, V, U1)) → APPEND_IN_GGA(W, Z, W1)
U3_GG(U, V, W, Z, U1, append_out_gga(W, Z, W1)) → U4_GG(U, V, W, Z, lessleaves_in_gg(U1, W1))
U3_GG(U, V, W, Z, U1, append_out_gga(W, Z, W1)) → LESSLEAVES_IN_GG(U1, W1)
lessleaves_in_gg(nil, cons(W, Z)) → lessleaves_out_gg(nil, cons(W, Z))
lessleaves_in_gg(cons(U, V), cons(W, Z)) → U2_gg(U, V, W, Z, append_in_gga(U, V, U1))
append_in_gga(nil, Y, Y) → append_out_gga(nil, Y, Y)
append_in_gga(cons(U, V), Y, cons(U, Z)) → U1_gga(U, V, Y, Z, append_in_gga(V, Y, Z))
U1_gga(U, V, Y, Z, append_out_gga(V, Y, Z)) → append_out_gga(cons(U, V), Y, cons(U, Z))
U2_gg(U, V, W, Z, append_out_gga(U, V, U1)) → U3_gg(U, V, W, Z, U1, append_in_gga(W, Z, W1))
U3_gg(U, V, W, Z, U1, append_out_gga(W, Z, W1)) → U4_gg(U, V, W, Z, lessleaves_in_gg(U1, W1))
U4_gg(U, V, W, Z, lessleaves_out_gg(U1, W1)) → lessleaves_out_gg(cons(U, V), cons(W, Z))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
LESSLEAVES_IN_GG(cons(U, V), cons(W, Z)) → U2_GG(U, V, W, Z, append_in_gga(U, V, U1))
LESSLEAVES_IN_GG(cons(U, V), cons(W, Z)) → APPEND_IN_GGA(U, V, U1)
APPEND_IN_GGA(cons(U, V), Y, cons(U, Z)) → U1_GGA(U, V, Y, Z, append_in_gga(V, Y, Z))
APPEND_IN_GGA(cons(U, V), Y, cons(U, Z)) → APPEND_IN_GGA(V, Y, Z)
U2_GG(U, V, W, Z, append_out_gga(U, V, U1)) → U3_GG(U, V, W, Z, U1, append_in_gga(W, Z, W1))
U2_GG(U, V, W, Z, append_out_gga(U, V, U1)) → APPEND_IN_GGA(W, Z, W1)
U3_GG(U, V, W, Z, U1, append_out_gga(W, Z, W1)) → U4_GG(U, V, W, Z, lessleaves_in_gg(U1, W1))
U3_GG(U, V, W, Z, U1, append_out_gga(W, Z, W1)) → LESSLEAVES_IN_GG(U1, W1)
lessleaves_in_gg(nil, cons(W, Z)) → lessleaves_out_gg(nil, cons(W, Z))
lessleaves_in_gg(cons(U, V), cons(W, Z)) → U2_gg(U, V, W, Z, append_in_gga(U, V, U1))
append_in_gga(nil, Y, Y) → append_out_gga(nil, Y, Y)
append_in_gga(cons(U, V), Y, cons(U, Z)) → U1_gga(U, V, Y, Z, append_in_gga(V, Y, Z))
U1_gga(U, V, Y, Z, append_out_gga(V, Y, Z)) → append_out_gga(cons(U, V), Y, cons(U, Z))
U2_gg(U, V, W, Z, append_out_gga(U, V, U1)) → U3_gg(U, V, W, Z, U1, append_in_gga(W, Z, W1))
U3_gg(U, V, W, Z, U1, append_out_gga(W, Z, W1)) → U4_gg(U, V, W, Z, lessleaves_in_gg(U1, W1))
U4_gg(U, V, W, Z, lessleaves_out_gg(U1, W1)) → lessleaves_out_gg(cons(U, V), cons(W, Z))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
APPEND_IN_GGA(cons(U, V), Y, cons(U, Z)) → APPEND_IN_GGA(V, Y, Z)
lessleaves_in_gg(nil, cons(W, Z)) → lessleaves_out_gg(nil, cons(W, Z))
lessleaves_in_gg(cons(U, V), cons(W, Z)) → U2_gg(U, V, W, Z, append_in_gga(U, V, U1))
append_in_gga(nil, Y, Y) → append_out_gga(nil, Y, Y)
append_in_gga(cons(U, V), Y, cons(U, Z)) → U1_gga(U, V, Y, Z, append_in_gga(V, Y, Z))
U1_gga(U, V, Y, Z, append_out_gga(V, Y, Z)) → append_out_gga(cons(U, V), Y, cons(U, Z))
U2_gg(U, V, W, Z, append_out_gga(U, V, U1)) → U3_gg(U, V, W, Z, U1, append_in_gga(W, Z, W1))
U3_gg(U, V, W, Z, U1, append_out_gga(W, Z, W1)) → U4_gg(U, V, W, Z, lessleaves_in_gg(U1, W1))
U4_gg(U, V, W, Z, lessleaves_out_gg(U1, W1)) → lessleaves_out_gg(cons(U, V), cons(W, Z))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
APPEND_IN_GGA(cons(U, V), Y, cons(U, Z)) → APPEND_IN_GGA(V, Y, Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
APPEND_IN_GGA(cons(U, V), Y) → APPEND_IN_GGA(V, Y)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
LESSLEAVES_IN_GG(cons(U, V), cons(W, Z)) → U2_GG(U, V, W, Z, append_in_gga(U, V, U1))
U3_GG(U, V, W, Z, U1, append_out_gga(W, Z, W1)) → LESSLEAVES_IN_GG(U1, W1)
U2_GG(U, V, W, Z, append_out_gga(U, V, U1)) → U3_GG(U, V, W, Z, U1, append_in_gga(W, Z, W1))
lessleaves_in_gg(nil, cons(W, Z)) → lessleaves_out_gg(nil, cons(W, Z))
lessleaves_in_gg(cons(U, V), cons(W, Z)) → U2_gg(U, V, W, Z, append_in_gga(U, V, U1))
append_in_gga(nil, Y, Y) → append_out_gga(nil, Y, Y)
append_in_gga(cons(U, V), Y, cons(U, Z)) → U1_gga(U, V, Y, Z, append_in_gga(V, Y, Z))
U1_gga(U, V, Y, Z, append_out_gga(V, Y, Z)) → append_out_gga(cons(U, V), Y, cons(U, Z))
U2_gg(U, V, W, Z, append_out_gga(U, V, U1)) → U3_gg(U, V, W, Z, U1, append_in_gga(W, Z, W1))
U3_gg(U, V, W, Z, U1, append_out_gga(W, Z, W1)) → U4_gg(U, V, W, Z, lessleaves_in_gg(U1, W1))
U4_gg(U, V, W, Z, lessleaves_out_gg(U1, W1)) → lessleaves_out_gg(cons(U, V), cons(W, Z))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
LESSLEAVES_IN_GG(cons(U, V), cons(W, Z)) → U2_GG(U, V, W, Z, append_in_gga(U, V, U1))
U3_GG(U, V, W, Z, U1, append_out_gga(W, Z, W1)) → LESSLEAVES_IN_GG(U1, W1)
U2_GG(U, V, W, Z, append_out_gga(U, V, U1)) → U3_GG(U, V, W, Z, U1, append_in_gga(W, Z, W1))
append_in_gga(nil, Y, Y) → append_out_gga(nil, Y, Y)
append_in_gga(cons(U, V), Y, cons(U, Z)) → U1_gga(U, V, Y, Z, append_in_gga(V, Y, Z))
U1_gga(U, V, Y, Z, append_out_gga(V, Y, Z)) → append_out_gga(cons(U, V), Y, cons(U, Z))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
LESSLEAVES_IN_GG(cons(U, V), cons(W, Z)) → U2_GG(W, Z, append_in_gga(U, V))
U3_GG(U1, append_out_gga(W1)) → LESSLEAVES_IN_GG(U1, W1)
U2_GG(W, Z, append_out_gga(U1)) → U3_GG(U1, append_in_gga(W, Z))
append_in_gga(nil, Y) → append_out_gga(Y)
append_in_gga(cons(U, V), Y) → U1_gga(U, append_in_gga(V, Y))
U1_gga(U, append_out_gga(Z)) → append_out_gga(cons(U, Z))
append_in_gga(x0, x1)
U1_gga(x0, x1)
Used ordering: POLO with Polynomial interpretation [25]:
append_in_gga(nil, Y) → append_out_gga(Y)
POL(LESSLEAVES_IN_GG(x1, x2)) = x1 + x2
POL(U1_gga(x1, x2)) = 2·x1 + x2
POL(U2_GG(x1, x2, x3)) = x1 + x2 + x3
POL(U3_GG(x1, x2)) = x1 + x2
POL(append_in_gga(x1, x2)) = x1 + x2
POL(append_out_gga(x1)) = x1
POL(cons(x1, x2)) = 2·x1 + x2
POL(nil) = 0
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ RuleRemovalProof
LESSLEAVES_IN_GG(cons(U, V), cons(W, Z)) → U2_GG(W, Z, append_in_gga(U, V))
U3_GG(U1, append_out_gga(W1)) → LESSLEAVES_IN_GG(U1, W1)
U2_GG(W, Z, append_out_gga(U1)) → U3_GG(U1, append_in_gga(W, Z))
append_in_gga(cons(U, V), Y) → U1_gga(U, append_in_gga(V, Y))
U1_gga(U, append_out_gga(Z)) → append_out_gga(cons(U, Z))
append_in_gga(x0, x1)
U1_gga(x0, x1)
LESSLEAVES_IN_GG(cons(U, V), cons(W, Z)) → U2_GG(W, Z, append_in_gga(U, V))
U2_GG(W, Z, append_out_gga(U1)) → U3_GG(U1, append_in_gga(W, Z))
append_in_gga(cons(U, V), Y) → U1_gga(U, append_in_gga(V, Y))
POL(LESSLEAVES_IN_GG(x1, x2)) = 2·x1 + x2
POL(U1_gga(x1, x2)) = 1 + 2·x1 + x2
POL(U2_GG(x1, x2, x3)) = 2 + 2·x1 + x2 + 2·x3
POL(U3_GG(x1, x2)) = 2·x1 + x2
POL(append_in_gga(x1, x2)) = 2·x1 + x2
POL(append_out_gga(x1)) = x1
POL(cons(x1, x2)) = 1 + 2·x1 + x2
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ RuleRemovalProof
↳ QDP
↳ DependencyGraphProof
U3_GG(U1, append_out_gga(W1)) → LESSLEAVES_IN_GG(U1, W1)
U1_gga(U, append_out_gga(Z)) → append_out_gga(cons(U, Z))
append_in_gga(x0, x1)
U1_gga(x0, x1)